package com.ruoyi.web.pgci.mapper;

import com.ruoyi.web.pgci.domain.PgciCourses;
import com.ruoyi.web.pgci.vo.TrainingDistributionCourseVo;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author yyq
 * @create 2023-11-12
 * @description 课程Mapper接口
 */
public interface PgciCoursesMapper {

    /**
     * 查询课程
     *
     * @param id 课程主键
     * @return 课程
     */
    public PgciCourses selectPgciCoursesById(Long id);

    /**
     * 查询课程列表
     *
     * @param pgciCourses 课程
     * @return 课程集合
     */
    public List<PgciCourses> selectPgciCoursesList(PgciCourses pgciCourses);

    /**
     * 新增课程
     *
     * @param pgciCourses 课程
     * @return 结果
     */
    public int insertPgciCourses(PgciCourses pgciCourses);

    public int batchInsertPgciCourses(List<PgciCourses> list);
    /**
     * 修改课程
     *
     * @param pgciCourses 课程
     * @return 结果
     */
    public int updatePgciCourses(PgciCourses pgciCourses);

    public int batchUpdatePgciCourses(List<PgciCourses> list);
    /**
     * 删除课程
     *
     * @param id 课程主键
     * @return 结果
     */
    public int deletePgciCoursesById(Long id);

    /**
     * 批量删除课程
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePgciCoursesByIds(Long[] ids);

    /**
     * 查询最大列
     * @return
     */
    public Integer selectMaxPosCol();

    /**
     * 查询最小列
     * @return
     */
    public Integer selectMinPosCol();


    public Integer selectLastPosRow();

    /**
     * 根据职务ID，查询该职务需要强制完成的课程
     * @param postId
     * @return
     */
    public List<PgciCourses> selectMandatoryCompletionCourseByPostId(Long postId);

    public List<PgciCourses> selectNRCompletionCourseByPostId(Long postId);

    public List<PgciCourses> selectRecommendedCompletionCourseByPostId(Long postId);

    public List<TrainingDistributionCourseVo> selectCoursesByPostIdAndLeanReq(@Param("postId") Long postId,
                                                                              @Param("learnReqList")List<Integer> learnReqList);

    public long selectMandatoryCourseCount();

    public long selectRecommendedCourseCount();

    public long  selectTotalCourses();

}
